package com.ll.stringdemo;

/**
 * @author 刘龙
 * @version 1.0
 */
public class StringExercise03 {
    public static void main(String[] args) {
        // a 指向 常量池的 "java"
        String a = "java";
        // b 指向堆中对象, 对象的value属性指向常量池"java"
        String b = new String("java");

        // true
        System.out.println(a.equals(b));

        // false
        System.out.println(a == b);

        /**
         * 当调用intern方法时,如果池已经包含一个等于此String对象的字符串(用equals(Object)方法确定),
         * 则返回池中的字符串,否则,将此String对象添加到池中,并返回此String对象的引用
         * b.intern()方法最终返回的是常量池的地址(对象)
         */
        // true
        System.out.println(a == b.intern());

        // false b指向堆,b.intern返回常量池中常量的地址
        System.out.println(b == b.intern());
    }
}
